package com.situ.javase.day1;
import java.math.BigDecimal;
import java.util.Scanner;

import org.junit.Test;

public class Study {

	// BigDecimal方法
	// 加法
	public static double add(double d1, double d2) {
		BigDecimal b1 = new BigDecimal(Double.toString(d1));
		BigDecimal b2 = new BigDecimal(Double.toString(d2));
		return b1.add(b2).doubleValue();
	}

	// 减法
	public static double sub(double d1, double d2) {
		BigDecimal b1 = new BigDecimal(Double.toString(d1));
		BigDecimal b2 = new BigDecimal(Double.toString(d2));
		return b1.subtract(b2).doubleValue();
	}

	// 乘法
	public static double mul(double d1, double d2) {
		BigDecimal b1 = new BigDecimal(Double.toString(d1));
		BigDecimal b2 = new BigDecimal(Double.toString(d2));
		return b1.multiply(b2).doubleValue();
	}

	// 除法
	public static double div(double d1, double d2, int dEF_DIV_NUM2) {
		int DEF_DIV_NUM = 3;

		return div(d1, d2, DEF_DIV_NUM);
	}

	public double round(double d, int len) {
		// 进行四舍五入的操作
		BigDecimal b1 = new BigDecimal(d);
		BigDecimal b2 = new BigDecimal(1);
		// 任何一个数字除以1都是原数字
		// ROUND_HALF_UP是BigDecimal的一个常量，表示进行四舍五入
		return b1.divide(b2, len, BigDecimal.ROUND_HALF_UP).doubleValue();
	}

	@Test
	public void test1() {
		/*
		 * 2、 2.1、编写一个收银台收款程序，if 定义输入----单价price、数量amount、金额money
		 * 定义输出----应收金额receivable、找零change 使用double类型变量 scanner.nextDouble();
		 * 2.2、当总价>=500时候打八折 2.3、考虑程序出现异常的情况，如：收款金额collected小于应收金额
		 * 若收款金额大于等于应收金额，则计算找零后输出 若收款金额小于应收金额，输出错误信息。
		 */
		double price, amount, receivable, change, collected;
		Scanner sc = new Scanner(System.in);

		System.out.println("请输入商品单价price:");
		price = sc.nextDouble();
		System.out.println("请输入购买数量amount:");
		amount = sc.nextDouble();

		double money = mul(price, amount);

		System.out.println("总花费金额:" + money);

		if (money >= 500) {
			receivable = money * 0.8;
			System.out.println("应收金额为：" + receivable);
		} else {
			receivable = money;
			System.out.println("应收金额：" + receivable);
		}

		System.out.println("输入收款金额：");
		collected = sc.nextDouble();

		if (collected >= receivable) {
			change = sub(collected, receivable);
			System.out.println("找零：" + change);
		} else {
			change = sub(receivable, collected);
			System.err.println("应付金额不足,还差：" + change + "元");
		}

	}

}
